package com.dkt.android.core

import android.content.Context
import android.content.pm.ApplicationInfo
import com.alibaba.android.arouter.launcher.ARouter
import com.baidu.mapapi.CoordType
import com.baidu.mapapi.SDKInitializer
import com.dkt.android.mvp.contract.UserContract
import com.dtb.utils.base.DtbBaseApp
import kotlin.properties.Delegates

class AppManager : DtbBaseApp(){

    companion object {
        var instance: AppManager by Delegates.notNull()
    }

    private var instances: AppManager? = null
    private var userContract: UserContract? = null

    override fun onCreate() {
        super.onCreate()
        instance=this
        initRouter()
        initMap()
    }

    /**
     * 地图初始化
     */
    private fun initMap(){
        SDKInitializer.initialize(this)
        //自4.3.0起，百度地图SDK所有接口均支持百度坐标和国测局坐标，用此方法设置您使用的坐标类型.
        //包括BD09LL和GCJ02两种坐标，默认是BD09LL坐标。
        SDKInitializer.setCoordType(CoordType.BD09LL)
    }


    /**
     * Router初始化
     */
    private fun initRouter(){
        if (isApkInDebug(applicationContext)) { // 这两行必须写在init之前，否则这些配置在init过程中将无效
            ARouter.openLog()     // 打印日志
            ARouter.openDebug()   // 开启调试模式(如果在InstantRun模式下运行，必须开启调试模式！线上版本需要关闭,否则有安全风险)
        }
        ARouter.init(this)
    }

    /**
     * 判断当前是否为debug模式
     */
    private fun isApkInDebug(context: Context): Boolean {
        return try {
            val info = context.applicationInfo
            info.flags != 0 && ApplicationInfo.FLAG_DEBUGGABLE != 0
        } catch (e: Exception) {

            false
        }
    }


    fun setUserContract(userContract: UserContract) {
        this.userContract = userContract
    }

    fun getUserContract(): UserContract? {
        return userContract
    }

}